#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>


using namespace std;

int main()
{
    int fd[2]={0};
    pipe(fd);//创建匿名管道

    int n=fork();//创建子进程
    if(n==0)//返回值为0的是子进城
    {
        cout<<"我是子进程，我的pid: "<<getpid()<<endl;

        close(fd[1]);//关闭管道文件写端

        char rbuf[1024]={0};
        read(fd[0],rbuf,1024);

        cout<<rbuf<<endl;
        exit(0);
    }
    sleep(3);
    close(fd[0]);//关闭管道文件读端

    cout<<"我是父进程，我的pid: "<<getpid()<<endl;
    char wbuf[1024]="来自父进程的消息";
    write(fd[1],wbuf,sizeof(wbuf));

    waitpid(n,nullptr,0);//等待并回收子进程
    return 0;
}